1.2. Should a VCALENDAR object contain whole VTIMEZONE objects or reference to a time zone?

Here are some arguments for having a whole VTIMEZONE object inside a VCALENDAR object instead of just a reference to an external time zone definition:

1.2.1.

Including the VTIMEZONE data in the VCALENDAR object makes the entity self contained and very portable.

1.2.2.

An application with only offline viewing capabilities does not have to worry about keeping a time zone database if all the VCALENDAR objects contain the necessary time zone information.